home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / smaltalk / manchest.lha / MANCHESTER / manchester / 2.2 / session_recording_timeshare.st < prev    next >
Text File  |  1993-07-24  |  2KB  |  59 lines

  1. "    NAME        session_recording_timeshare
  2.     AUTHOR        Dr Who
  3.     FUNCTION needed after session_recording and timeshare
  4.     ST-VERSIONS    
  5.     PREREQUISITES     
  6.     CONFLICTS    
  7.     DISTRIBUTION      world
  8.     VERSION        1.1
  9.     DATE    22 Jan 1989
  10. SUMMARY    session_recording_timeshare
  11.     If you are going to use the session
  12.    recording with the timeshare goody file this in after filing in
  13.    both the other goodies. This just fixes some of the methods in
  14.    InputState so that they combine the two goodies properly.(2.2).RMD
  15. "!
  16. 'From Smalltalk-80, Version 2.3 of 13 June 1988 on 27 June 1989 at 1:57:40 pm'!
  17.  
  18.  
  19.  
  20. !InputState methodsFor: 'initialize-release'!
  21.  
  22. install
  23.     "Initialize and connect the receiver to the hardware.  Terminate the old input 
  24.     process if any."
  25.  
  26.     InputProcess == nil ifFalse: [InputProcess terminate].
  27.     self initState.
  28.     self class startYieldProcess.
  29.     InputSemaphore _ Semaphore new.
  30.     InputProcess _ [self run] newProcess.
  31.     InputProcess priority: Processor lowIOPriority.
  32.     InputProcess resume.
  33.     self primInputSemaphore: InputSemaphore.
  34.     inputMode _ #normal! !
  35.  
  36. 'From Smalltalk-80, Version 2.3 of 13 June 1988 on 27 June 1989 at 2:00:27 pm'!
  37.  
  38.  
  39.  
  40. !InputState class methodsFor: 'private'!
  41.  
  42. startYieldProcess
  43.     "Start the yield process (terminate the old one if it exists), 
  44.     which does an await (yield to other OS processes) and then 
  45.     yields to other Smalltalk processes.  Called by InputState>>install"
  46.  
  47.     YieldProcess == nil ifFalse: [YieldProcess terminate].
  48.     SleepyCount _ 0.
  49.     YieldProcess _ [[true]
  50.                 whileTrue: 
  51.                     [(SleepyCount >= 1000 and: [(Sensor inputState currentInputMode == #playback) not])
  52.                         ifTrue: [self awaitEvent]
  53.                         ifFalse: [SleepyCount _ SleepyCount + 1].
  54.                     Processor yield]] newProcess.
  55.     YieldProcess priority: Processor userSchedulingPriority.
  56.     YieldProcess resume! !
  57.  
  58.  Sensor inputState install!
  59.